/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
//寻找目标值target再打乱的有序数组中的索引
var search = function (nums, target) {
  let left = 0, right = nums.length - 1
  while (left <= right) {
    let mid = Math.floor((left + right) / 2)

    // 如果中间值正好等于目标值，返回索引mid
    if (nums[mid] === target) return mid
    //有序部分在左边
    if (nums[left] <= nums[mid]) {//包含等号，确保 left==mid 时也能判断为有序（[1,0]）
      //目标值在左边（left处用'='）
      if (nums[left] <= target && target < nums[mid]) {
        right = mid - 1
      } else {//目标值在右边
        left = mid + 1
      }
    } else {//有序部分在右边
      //目标值在右边（//right处用'='）
      if (nums[mid] < target && target <= nums[right]) {
        left = mid + 1
      } else {//目标值在左边
        right = mid - 1
      }
    }
  }

  //如果数组nums中找不到target，返回-1
  return -1
};